/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador.Service.Almacen;

import Controlador.Bean.Almacen.EntradaSalida;
import Data.config.SessionFac;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.session.SqlSession;

/**
 *
 * @author César
 */
public class ServicioEntradaSalida {
    
    public List<EntradaSalida> filtrarPorTransaccion(String idTransaccion){
        List<EntradaSalida> data;
        try (SqlSession sqlsession = SessionFac.SessionFactory().openSession()) {
            HashMap<String,String> hm = new HashMap<>();
            data = (List)sqlsession.selectList("Data.Almacen.EntradaSalida.filtrarPorTransaccion", idTransaccion);
            sqlsession.close();
        }
        return data;
    }
    
    public List<EntradaSalida> filtrarPorAlmacen(String estado, Date fechaInicio, Date fechaFin, String idAlmacen){
        List<EntradaSalida> data = null;
        try (SqlSession sqlsession = SessionFac.SessionFactory().openSession()) {
            HashMap<String,String> hm = new HashMap<>();
            //#{estado} #{fechainicio}, 'DD MM YYYY HH MI SS') #{iniciofin}, 'DD MM YYYY HH MI SS')#{IdAlmacen} 
            hm.put("estado", "1");
            hm.put("fechainicio", new SimpleDateFormat("dd MM yyyy HH mm ss").format(fechaInicio));
            hm.put("fechafin", new SimpleDateFormat("dd MM yyyy HH mm ss").format(fechaFin));
            hm.put("IdAlmacen", "%"+idAlmacen+"%");
            data = (List)sqlsession.selectList("Data.Almacen.EntradaSalida.filtrarPorAlmacen", hm);
            sqlsession.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        return data;
    }
    
    public void guardar(List<EntradaSalida> entSal){
        try (SqlSession sqlsession = SessionFac.SessionFactory().openSession()) {
            //#{estado} #{fechainicio}, 'DD MM YYYY HH MI SS') #{iniciofin}, 'DD MM YYYY HH MI SS')#{IdAlmacen} 
            int maxId = obtenerMaxId(sqlsession);
            for(int i=0; i<entSal.size(); i++){
                entSal.get(i).setIdEntradaSalida("TRA-"+(++maxId));
                sqlsession.insert("Data.Almacen.EntradaSalida.guardar", entSal.get(i));
                sqlsession.commit();
            }
            sqlsession.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    public int obtenerMaxId(SqlSession sqlsession){
        Integer maxId=0;
        maxId = sqlsession.selectOne("Data.Almacen.EntradaSalida.seleccionarMaxId");
        if(maxId == null){
                return 0;
        }else{
            return maxId.intValue();
        }
    }
    
}
